package ch.ethz.inf.shop.model;

import java.math.BigDecimal;
import java.util.List;

public interface DatastoreInterface {

	public abstract Product getProductById(final int id);

	public abstract List<Product> getAllProducts();

	public abstract List<Product> getProductsByName(final String name);

	public abstract List<Product> getProductsByCategory(final Category category);

	public abstract List<Product> getProductsByBrand(final Brand itemBrand);

	public abstract List<Category> getAllCategories();

	public abstract List<Brand> getAllBrands();

	public abstract List<Product> getProductsByPopularity();

	public abstract List<Product> getProductsByBrandName(final String brandName);

	public abstract List<Product> getProductsByCategoryName(final String categoryName);

	public abstract List<Comment> getCommentsByProduct(final Product product);

	public abstract RegisteredUser getUserDetailsFor(final String username, final String password);

	public abstract void saveComment(final Comment c);

	public abstract void addLike(final RegisteredUser currentlyLoggedInUser, final Integer productID);

	public abstract List<Recipe> getRecipes(String orderBy);

	public abstract Recipe getRecipeById(final int id);

	public abstract List<RecipeItem> getRecipeItemsByRecipe(final Recipe recipe);

	public abstract void addToShoppingCart(RegisteredUser currentlyLoggedInUser, Integer productId);

	public abstract List<ShoppingCartLine> getShoppingCartLinesForUser(RegisteredUser user);

	public abstract BigDecimal getShoppingCartPriceForUser(RegisteredUser user);

	public abstract void addOneToShoppingCartLine(int cartLineId);

	public abstract void removeOneFromShoppingCartLine(int cartLineId);

	public abstract RegisteredUser createUser(String username, String email, String password);

}